package org.example.dynamic_planning;

import java.util.Arrays;

public class Use_the_minimum_cost_to_climb_the_stairs {
    public static void main(String[] args) {
        //使用最小花费爬楼梯

        //给你一个整数数组 cost ，其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用，即可选择向上爬一个或者两个台阶。
        //你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
        //请你计算并返回达到楼梯顶部的最低花费。
        int[] cost = {1, 100, 1, 1, 1, 100, 1, 1, 100, 1};
        int i = minCostClimbingStairs(cost);
        System.out.println(i);
    }

    public static int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length+1];
        Arrays.fill(dp, 0);
        dp[0] = 0;
        dp[1] = 0;
        int len = 2;
        while (len <= cost.length) {
            dp[len] = Math.min(dp[len - 1] + cost[len - 1], dp[len - 2] + cost[len - 2]);
            len++;
        }
        return dp[cost.length];
    }

}
